Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Лексичний аналізатор

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра прикладної математики

Інформація про роботу

Рік:
2024
Тип роботи:
Лабораторна робота
Предмет:
Математика
Група:
ПМ-22

Частина тексту файла

Міністерство освіти і науки України Національний університет “Львівська політехніка” Інститут прикладної математики та фундаментальних наук Кафедра прикладної математики Звіт Лабораторна робота №2 “Лексичний аналізатор” Завдання до лабораторної роботи: Розглянути підмножину мови Pascal,у якій є ідентифікатори,цілі константи,які використовуються у операторах опису(типи змінних –real,integer),оператори присвоєння,умовні оператори(коротка або довга форма,умова-одна операція порівняння). Код програми # include <iostream.h> # include <iomanip.h> # include <conio.h> # include <stdlib.h> # include <string.h> # include <stdio.h> # include <fstream.h> # define lexsize 30 char lit,lex[lexsize],syn; int cl,i,j,k,l; int pr; FILE *fr,*fw; void getlit(); void scan(); int main(int argc, char* argv[]) { for (i=0;i<lexsize;i++) lex[i]=' '; fr=fopen("f1.txt","r"); fw=fopen("f2.txt","w"); lit=' '; while(!feof(fr)) { scan(); fprintf(fw,"%c\t%s\n",syn,lex); cout<<syn<<' '<<' '<<' '<<lex<<"\n"; } fclose(fr); fclose(fw); getch(); } void scan() { i=0; pr=0; while((lit==' ') || (lit=='\t') || (lit=='\n') ) getlit(); switch (cl) { case 1 : lex[i++]=lit; getlit(); while (cl<=2) { lex[i++]=lit; getlit(); } lex[i]='\0'; //zakrutu masyv if ( strcmp("if",lex)==0 ) { syn='F'; pr=1; } if ( strcmp("else",lex)==0 ) { syn='L'; pr=1 ; } if ( strcmp("then",lex)==0 ) { syn='T'; pr=1 ; } if ( strcmp("begin",lex)==0 ) { syn='B'; pr=1 ; } if ( strcmp("var",lex)==0 ) { syn='V'; pr=1 ; } if ( strcmp("real",lex)==0 ) { syn='R'; pr=1 ; } if ( strcmp("integer",lex)==0 ) { syn='G'; pr=1 ; } if ( strcmp("end",lex)==0 ) { syn='N'; pr=1 ; } if ( strcmp("and",lex)==0 ) { syn='D'; pr=1 ; } if ( strcmp("or",lex)==0 ) { syn='J'; pr=1 ; } if ( strcmp("const",lex)==0 ) { syn='M'; pr=1 ; } if (pr==0) { syn='I'; } break; case 2 : lex[i++]=lit; getlit(); while (cl==2 ) { lex[i++]=lit; getlit(); } syn='C'; lex[i]='\0'; break; case 3 : lex[0]=lit; lex[1]='\0'; syn=lit; getlit(); break; case 4: lex[i++]=lit; syn='O'; getlit(); if(lit=='=') { lex[i++]=lit; syn='O'; getlit(); } lex[i]='\0'; break; case 5: lex[i++]=lit; syn='O'; getlit(); if(lit=='=') { lex[i++]=lit; syn='O'; getlit(); } if(lit=='>') { lex[i++]=lit; syn='O'; getlit(); } lex[i]='\0'; break; case 6: lex[0]=lit; getlit(); syn='O'; lex[1]='\0'; break; case 7: lex[0]=lit; getlit(); syn='A'; lex[1]='\0'; break; case 8: lex[i++]=lit; syn=':'; getlit(); if(lit=='=') { lex[i++]=lit; syn='S'; getlit(); } lex[i]='\0'; break; default: lex[0]=lit; lex[1]='\0'; syn='E'; getlit(); } } void getlit() { lit=fgetc(fr); cl=9; if( (lit>='a') && (lit<='z') || (lit>='A') && (lit<='Z') ) cl=1; if ( (lit>='0') && (lit<='9') ) cl=2; if ( ( lit=='(' ) || ( lit==')' ) || (lit==';') || (lit==',') || (lit=='.') || (lit=='=') ) cl=3; if (lit=='>') cl=4; if (lit=='<') cl=5; if (lit=='=') cl=6; if ( ( lit=='+' ) || ( lit=='-' ) || (lit=='*') || (lit=='/') ) cl=7; if (lit==':') cl=8; } 
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини